<?php
namespace Views;

require_once('\Models\Password.php');
require_once('\Views\PageView.php');

class LoginView
{	
	// Strängar ur POST-arrayen
	private static $_username 	= "username";
	private static $_token 		= "token";
	private static $_password 	= "password";
	private static $_login 		= "login";
	private static $_logout 	= "logout";
	private static $_rememberMe = "rememberMe";
	
	private $_pv = null;
	
	public function __construct()
	{
		$this->_pv = new \Views\PageView();
	}
	
	/**
	 * HTML för login-box
	 * @return HTML String
	 */	
	public function createLoginBox()
	{	
		$html = 
		'<form method="post" action="index.php">
			<fieldset>
				<div class="login-box">
					<label for="'.$this->_pv->userName.'">Användarnamn: </label>
					<input type="text" id="'.$this->_pv->userName.'" name="'.$this->_pv->userName.'" /><br/>
					<label for="'.$this->_pv->password.'">Lösenord: </label>
					<input type="password" id="'.$this->_pv->password.'" name="'.$this->_pv->password.'" />
					<p>
						<input type="submit" value="Logga in" name="'.self::$_login.'" />
						<label for="'.self::$_rememberMe.'">Kom ihåg mig: </label>
						<input type="checkbox" id="'.self::$_rememberMe.'" name="'.self::$_rememberMe.'" />
					</p>
				</div>
			</fieldset>
		</form>';
		
		return $html;
	}
	
	/**
	 * HTML för logout-box
	 * @return HTML String
	 */
	public function createLogoutBox()
	{
		$html = 
		'<form method="post" action="index.php">
			<input type="submit" value="Logga ut" name="' . self::$_logout .'" />
		</form>';
		
		return $html;
	}
	
	/**
	 * Hämtar användarnamnet ur GET-arrayen
	 * @return String | null
	 */
	public function getUserName()
	{
		if(isset($_POST[$this->_pv->userName]))
			return $_POST[$this->_pv->userName];
		
		return NULL;
	}
	
	/**
	 * Hämtar lösenordet ur GET-arrayen
	 * @return String | null
	 */
	public function getPassword()
	{
		if(isset($_POST[$this->_pv->password]))
			return $_POST[$this->_pv->password];
		
		return NULL;
	}
	
	/**
	 * Kontrollerar om användaren försökt att logga in
	 * @return Bool | null
	 */
	public function triedToLogin()
	{
	 	if(isset($_POST[self::$_login]))
			return true;
		
		return false;
	}

	/**
	 *	Kontrollerar om användaren försökt logga ut
	 *  @return Bool | null
	 */
	public function triedToLogout()
	{
		if(isset($_POST[self::$_logout]))
			return true;
		
		return false;
	}
	 
	 /**
	 * Kontrollerar om användaren vill fortsätta vara inloggad
	 * @param seconds int
	 * @return bool
	 */
	public function rememberMe()
	{
		if(isset($_POST[self::$_rememberMe]) && $_POST[self::$_rememberMe] == "on")
			return true;
		else
			return false;	
	}
	
	/**
	 * Tar bort cookien över användarens inloggningsuppgifter
	 * @return bool
	 */
	public function forgetMe()
	{
		if(isset($_COOKIE[self::$_token]))
		{
			// Tar bort cookies (så utgångsdatum passerat)
			setcookie(self::$_token, "", time() - 1);
			return true;
		}
		else 
			return false;
	}
	
	/**
	 * Sätter en kaka med användarens unika token
	 * @param $token string
	 * @param $seconds int - 1 vecka som default
	 */
	public function setTokenCookie($token, $seconds = 604800)
	{
		setcookie(self::$_token, $token, time() + $seconds);
	}
	
	/**
	 * Returnerar sparad token från cookie
	 * @return string
	 */
	public function getTokenCookie()
	{
		// Returnera token
		if(isset($_COOKIE[self::$_token]))
			return $_COOKIE[self::$_token];
		else
			return null;
	}
}
?>